package com.boluo.customer.service;

import java.util.List;

import com.boluo.common.core.page.TableDataInfo;
import com.boluo.customer.domain.CustomerInfo;
import com.boluo.customer.domain.CustomerLinkman;
import com.boluo.customer.dto.CustomerInfoDTO;
import com.boluo.customer.vo.CustomerVO;

/**
 * 客户基本信息Service接口
 * 
 * @author SekonoAlpaca
 * @date 2023-05-02
 */
public interface ICustomerInfoService 
{
    /**
     * 查询客户基本信息
     * 
     * @param id 客户基本信息主键
     * @return 客户基本信息
     */
    public CustomerInfo selectCustomerInfoById(Long id);

    /**
     * 查询客户基本信息列表
     * 
     * @param customerInfo 客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustomerInfo> selectCustomerInfoList(CustomerInfo customerInfo);

    /**
     * 新增客户基本信息
     * 
     * @param customerInfo 客户基本信息
     * @return 结果
     */
    public int insertCustomerInfo(CustomerInfo customerInfo);

    /**
     * 修改客户基本信息
     * 
     * @param customerInfo 客户基本信息
     * @return 结果
     */
    public int updateCustomerInfo(CustomerInfo customerInfo);

    /**
     * 批量删除客户基本信息
     * 
     * @param ids 需要删除的客户基本信息主键集合
     * @return 结果
     */
    public int deleteCustomerInfoByIds(Long[] ids);

    /**
     * 删除客户基本信息信息
     * 
     * @param id 客户基本信息主键
     * @return 结果
     */
    public int deleteCustomerInfoById(Long id);

    /**
     * 查询该客户名称是否存在
     * @param name 名称关键字
     * @return 0不存在 1存在
     */
    int selectCustomerInfoByName(String name);

    /**
     * 通过企业名称,法定代表人,所属行业关键字模糊搜索
     * @param customerInfo 企业名称,法定代表人,所属行业
     * @return 结果列表
     */
    List<CustomerInfoDTO> selectCustomerInfoListByComplex(CustomerVO customerInfo);

    /**
     * 查询所属客户列表(不分页)
     * @return
     */
    List<CustomerInfoDTO> listAllByIdAndName();

    /**
     * 获取所属客户下的联系人信息
     * @param id
     * @return
     */
    List<CustomerLinkman> selectName(Long id);
}
